home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_11 / nelson / iobase.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-12  |  2.1 KB  |  62 lines

  1. /* ----------------------------------------------------
  2.  *  Listing 1
  3.  *
  4.  *  iobase.h
  5.  *  IOCTL Base class definition
  6.  * ------------------------------------------------- */
  7.  
  8. #ifndef  __IOBASE_H
  9. #define  __IOBASE_H
  10. #include <dos.h>
  11.  
  12. class IoctlBase    {
  13. public:
  14.     //DOS IOCTL subfunction codes .....
  15.     enum ioctl_cmd    {
  16.     get_handle_info,    set_handle_info,
  17.     read_ioctl_char,    send_ioctl_char,
  18.     read_ioctl_block,   send_ioctl_block,
  19.     input_status,       output_status,
  20.     drive_removable,    drive_remote,
  21.     handle_remote,      sharing_retry,
  22.     gen_ioctl_char,     gen_ioctl_block,
  23.     get_log_drivemap,   set_log_drivemap,
  24.     query_ioctl_char,   query_ioctl_block
  25.     };
  26.     //Minor function codes, Generic IOCTL
  27.     //for character devices ....
  28.     enum char_cmd {
  29.     set_iter_count = 0x45,     get_iter_count = 0x65,
  30.     select_code_page = 0x4a,   start_code_page = 0x4c,
  31.     end_code_page = 0x4d,      query_code_page = 0x6a,
  32.     query_prepare_list = 0x6b, set_display_mode = 0x5f,
  33.     get_display_mode = 0x7f
  34.     };
  35.     //Minor function codes for, Generic IOCTL
  36.     //for block devices. ....
  37.     enum block_cmd {
  38.     set_params = 0x40,         write_track = 0x41,
  39.     format_and_verify = 0x42,  set_media_id = 0x46,
  40.     set_access_flag = 0x47,    get_params = 0x60,
  41.     read_track = 0x61,         verify_track = 0x62,
  42.     get_media_id = 0x66,       get_access_flag = 0x67,
  43.     sense_media_type = 0x68
  44.     };
  45.     IoctlBase();
  46.     ~IoctlBase() { }
  47. protected:
  48.     //switch DOS major/minor version numbers
  49.     //for direct version comparisons .........
  50.     struct DOS_MM { unsigned char minor, major;};
  51.     union   DOS_VERSION  { int version;
  52.                            struct  DOS_MM   ver; };
  53.     union DOS_VERSION _dos;
  54.     int _dos_error;   //saved DOS error number
  55.     union REGS _iregs, _oregs;
  56.     struct SREGS _sregs;
  57.     virtual void int21_44h(ioctl_cmd code );
  58.     virtual void IoctlError( int ) { }  //error proc
  59. };  //.... end class IoctlBase
  60. #endif   //__IOBASE_H
  61. /* ----- End of File ------------------------------- */
  62.